// esbuild.config.js

const esbuild = require('esbuild');
const path = require('path');
const packageJson = require('./package.json');

// 获取外部依赖（不打包到最终文件中的依赖）
// 服务器端应用通常不应该打包 node_modules，而是让部署环境安装
const external = Object.keys(packageJson.dependencies || {});

esbuild
    .build({
        entryPoints: ['app.js'], // 入口文件
        bundle: true, // 将所有依赖项打包到一个文件
        platform: 'node', // 指定目标环境为 Node.js
        target: ['node18'], // 指定 Node.js 版本（根据您的环境调整）
        external: external, // 排除所有在 dependencies 中列出的外部模块
        outfile: 'dist/bundle.js', // 输出文件名和路径
        minify: process.env.NODE_ENV === 'production', // 生产环境进行代码最小化
        sourcemap: process.env.NODE_ENV !== 'production', // 非生产环境生成 SourceMap
        logLevel: 'info',
        // 允许使用 __dirname 和 require()
        inject: [path.join(__dirname, 'esbuild-shims.js')],
    })
    .then(() => {
        console.log('✅ ESBuild 打包完成: dist/bundle.js');
    })
    .catch((err) => {
        console.error('❌ ESBuild 打包失败:', err);
        process.exit(1);
    });
